#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int* plusOne(int* digits, int digitsSize, int* returnSize) {
    bool add=true;
    int nSize=digitsSize;
    for(int i=0;i<digitsSize;i++)
        if( digits[i]!= 9 ){
            add=false;
            break;
        }
    if( add )
        nSize++;
    int *r=malloc(sizeof(int)*nSize);
    int a=1,tmp;
    for(int i=digitsSize-1,j=nSize-1;i>=0;--i,--j){
        tmp=digits[i]+a;
        if(tmp>=10){
            a=1;
            tmp=tmp%10;
        }else
            a=0;
        r[j]=tmp;
    }
    if( add )
        r[0]=1;
    *returnSize=nSize;
    return r;
}

int* plusOne(int *digits, int digitsSize, int* returnSize) {
    for(int i=digitsSize-1;i>=0;i++){
        int tmp=digits[i]+1;
        tmp=tmp%10;
        digits[i]=tmp;
        if( tmp != 0 )
            break;
    }
}

int main(){
    int a[]={0};
    int rt;
    int *b=plusOne(a,sizeof(a)/sizeof(int),&rt);
    for(int i=0;i<rt;i++)
        printf("%d ",b[i]);
    return 0;
}
